#include <stdio.h>
#include <string.h>
/*
练习题：电话簿管理系统
任务：创建一个简单的电话簿管理系统，允许用户添加联系人、查找联系人、显示所有联系人以及退出程序。你需要使用以下几个函数：

addContact：添加一个新的联系人到电话簿。
findContact：根据姓名查找联系人。
displayAll：显示所有联系人的信息。
main：作为程序的主入口，调用其他函数来实现用户交互。*/
// 由于你还没有学习数组，我们这里用全局变量来存储联系人信息
#define MAX_CONTACTS 100

struct Contact {
    char name[50];
    char phone[20];
};

// 电话簿
struct Contact phonebook[MAX_CONTACTS];
int contactCount = 0;

// 函数原型
void addContact();
void findContact();
void displayAll();
void clearInputBuffer();

int main() {
    int choice;
    do {
        printf("\nPhonebook Management System\n");
        printf("1. Add Contact\n");
        printf("2. Find Contact\n");
        printf("3. Display All Contacts\n");
        printf("4. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);
        clearInputBuffer();

        switch(choice) {
            case 1: addContact(); break;
            case 2: findContact(); break;
            case 3: displayAll(); break;
            case 4: printf("Exiting...\n"); break;
            default: printf("Invalid choice. Please try again.\n");
        }
    } while(choice != 4);

    return 0;
}

// 清除输入缓冲区
void clearInputBuffer() {
    while (getchar() != '\n');
}

// 添加联系人
void addContact() {
    if (contactCount >= MAX_CONTACTS) {
        printf("Phonebook is full. Cannot add more contacts.\n");
        return;
    }

    printf("Enter name: ");
    fgets(phonebook[contactCount].name, 50, stdin);
    phonebook[contactCount].name[strcspn(phonebook[contactCount].name, "\n")] = 0; // 去除换行符

    printf("Enter phone number: ");
    fgets(phonebook[contactCount].phone, 20, stdin);
    phonebook[contactCount].phone[strcspn(phonebook[contactCount].phone, "\n")] = 0; // 去除换行符

    contactCount++;
    printf("Contact added successfully.\n");
}

// 查找联系人
void findContact() {
    char searchName[50];
    printf("Enter name to search: ");
    fgets(searchName, 50, stdin);
    searchName[strcspn(searchName, "\n")] = 0; // 去除换行符

    for (int i = 0; i < contactCount; i++) {
        if (strcmp(searchName, phonebook[i].name) == 0) {
            printf("Name: %s, Phone: %s\n", phonebook[i].name, phonebook[i].phone);
            return;
        }
    }
    printf("Contact not found.\n");
}

// 显示所有联系人
void displayAll() {
    if (contactCount == 0) {
        printf("Phonebook is empty.\n");
        return;
    }

    for (int i = 0; i < contactCount; i++) {
        printf("Name: %s, Phone: %s\n", phonebook[i].name, phonebook[i].phone);
    }
}
